hyperloglog-rs 0.1.38

A Rust implementation of HyperLogLog trying to be parsimonious with memory.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "101c93fd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: datasketch in /home/luca/anaconda3/envs/grape/lib/python3.11/site-packages (1.5.9)\r\n",
      "Requirement already satisfied: numpy>=1.11 in /home/luca/anaconda3/envs/grape/lib/python3.11/site-packages (from datasketch) (1.23.5)\r\n",
      "Requirement already satisfied: scipy>=1.0.0 in /home/luca/anaconda3/envs/grape/lib/python3.11/site-packages (from datasketch) (1.10.1)\r\n"
     ]
    }
   ],
   "source": [
    "!pip install datasketch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "dd95a263",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>precision</th>\n",
       "      <th>bits</th>\n",
       "      <th>exact</th>\n",
       "      <th>hll</th>\n",
       "      <th>set1</th>\n",
       "      <th>set2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.521435</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.521435</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.521435</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.523263</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.523263</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8392</th>\n",
       "      <td>16</td>\n",
       "      <td>5</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.468786</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8393</th>\n",
       "      <td>16</td>\n",
       "      <td>6</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.468786</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8397</th>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.469518</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8398</th>\n",
       "      <td>17</td>\n",
       "      <td>5</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.469518</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8399</th>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.469518</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>4200 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      precision  bits     exact       hll  \\\n",
       "3             4     4  0.451163  0.521435   \n",
       "4             4     5  0.451163  0.521435   \n",
       "5             4     6  0.451163  0.521435   \n",
       "9             5     4  0.451163  0.523263   \n",
       "10            5     5  0.451163  0.523263   \n",
       "...         ...   ...       ...       ...   \n",
       "8392         16     5  0.471412  0.468786   \n",
       "8393         16     6  0.471412  0.468786   \n",
       "8397         17     4  0.471412  0.469518   \n",
       "8398         17     5  0.471412  0.469518   \n",
       "8399         17     6  0.471412  0.469518   \n",
       "\n",
       "                                                   set1  \\\n",
       "3     55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "4     55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "5     55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "9     55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "10    55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "...                                                 ...   \n",
       "8392  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "8393  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "8397  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "8398  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "8399  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "\n",
       "                                                   set2  \n",
       "3     108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "4     108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "5     108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "9     108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "10    108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "...                                                 ...  \n",
       "8392  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "8393  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "8397  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "8398  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "8399  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "\n",
       "[4200 rows x 6 columns]"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "df = pd.read_csv(\"jaccard_benchmark.tsv\", sep=\"\\t\")\n",
    "\n",
    "\n",
    "df = df[df.bits.isin([4, 5, 6])]\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "5b959618",
   "metadata": {},
   "outputs": [],
   "source": [
    "from datasketch import MinHash\n",
    "from tqdm.auto import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "ef240523",
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "\n",
    "bits = df.bits.unique()\n",
    "precision = df.precision.unique()\n",
    "\n",
    "number_of_words = [\n",
    "    # We divide again by 2 because the number of permutations used is a u64\n",
    "    # and by two again as \n",
    "    math.ceil(b * 2**p / 32) // 2 // 2\n",
    "    for b in bits\n",
    "    for p in precision\n",
    "]\n",
    "\n",
    "number_of_words = [\n",
    "    word\n",
    "    for word in number_of_words\n",
    "    if word > 0\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "ba90008f",
   "metadata": {},
   "outputs": [],
   "source": [
    "from typing import List\n",
    "\n",
    "def get_perfs(row) -> List:\n",
    "    row = row[1]\n",
    "    new_results = []\n",
    "    set1 = [\n",
    "        l.encode(\"utf8\")\n",
    "        for l in row.set1.split(\",\")\n",
    "    ]\n",
    "    set2 = [\n",
    "        r.encode(\"utf8\")\n",
    "        for r in row.set2.split(\",\")\n",
    "    ]\n",
    "    for number_of_permutations in number_of_words:\n",
    "        left_min_hash = MinHash(\n",
    "            num_perm=number_of_permutations\n",
    "        )\n",
    "        right_min_hash = MinHash(\n",
    "            num_perm=number_of_permutations\n",
    "        )\n",
    "        for left in set1:\n",
    "            left_min_hash.update(left)\n",
    "        for right in set2:\n",
    "            right_min_hash.update(right)\n",
    "        estimated = left_min_hash.jaccard(right_min_hash)\n",
    "        new_results.append({\n",
    "            \"exact\": row.exact,\n",
    "            \"set1\": row.set1,\n",
    "            \"set2\": row.set2,\n",
    "            \"approximation\": estimated,\n",
    "            \"number_of_permutations\": number_of_permutations\n",
    "        })\n",
    "    return new_results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "id": "5df58f76",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7eca54729a2c431d95bb739bd3d3c15d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/4200 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from multiprocessing import Pool\n",
    "\n",
    "with Pool(24) as p:\n",
    "    results = list(tqdm(\n",
    "        p.imap(\n",
    "            get_perfs,\n",
    "            df.iterrows()\n",
    "        ),\n",
    "        total=df.shape[0]\n",
    "    ))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "id": "f65ed038",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b0caf551c87742f8a7dfa459d75f7415",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/4200 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "as_df = pd.DataFrame([\n",
    "    r\n",
    "    for result in tqdm(results)\n",
    "    for r in result\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "id": "42d815a1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>exact</th>\n",
       "      <th>set1</th>\n",
       "      <th>set2</th>\n",
       "      <th>approximation</th>\n",
       "      <th>number_of_permutations</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.451163</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.451163</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.451163</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.451163</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.451163</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "      <td>0.625000</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>163795</th>\n",
       "      <td>0.471412</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "      <td>0.463542</td>\n",
       "      <td>384</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>163796</th>\n",
       "      <td>0.471412</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "      <td>0.464844</td>\n",
       "      <td>768</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>163797</th>\n",
       "      <td>0.471412</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "      <td>0.470703</td>\n",
       "      <td>1536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>163798</th>\n",
       "      <td>0.471412</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "      <td>0.462891</td>\n",
       "      <td>3072</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>163799</th>\n",
       "      <td>0.471412</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "      <td>0.465007</td>\n",
       "      <td>6144</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>163800 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           exact                                               set1  \\\n",
       "0       0.451163  55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "1       0.451163  55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "2       0.451163  55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "3       0.451163  55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "4       0.451163  55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "...          ...                                                ...   \n",
       "163795  0.471412  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "163796  0.471412  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "163797  0.471412  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "163798  0.471412  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "163799  0.471412  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "\n",
       "                                                     set2  approximation  \\\n",
       "0       108,417,157,409,309,246,451,71,77,625,942,233,...       0.000000   \n",
       "1       108,417,157,409,309,246,451,71,77,625,942,233,...       0.500000   \n",
       "2       108,417,157,409,309,246,451,71,77,625,942,233,...       0.500000   \n",
       "3       108,417,157,409,309,246,451,71,77,625,942,233,...       0.750000   \n",
       "4       108,417,157,409,309,246,451,71,77,625,942,233,...       0.625000   \n",
       "...                                                   ...            ...   \n",
       "163795  540,369,335,198,763,460,242,508,287,739,286,73...       0.463542   \n",
       "163796  540,369,335,198,763,460,242,508,287,739,286,73...       0.464844   \n",
       "163797  540,369,335,198,763,460,242,508,287,739,286,73...       0.470703   \n",
       "163798  540,369,335,198,763,460,242,508,287,739,286,73...       0.462891   \n",
       "163799  540,369,335,198,763,460,242,508,287,739,286,73...       0.465007   \n",
       "\n",
       "        number_of_permutations  \n",
       "0                            1  \n",
       "1                            2  \n",
       "2                            4  \n",
       "3                            8  \n",
       "4                           16  \n",
       "...                        ...  \n",
       "163795                     384  \n",
       "163796                     768  \n",
       "163797                    1536  \n",
       "163798                    3072  \n",
       "163799                    6144  \n",
       "\n",
       "[163800 rows x 5 columns]"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "as_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "id": "172569b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>precision</th>\n",
       "      <th>bits</th>\n",
       "      <th>exact</th>\n",
       "      <th>approximation</th>\n",
       "      <th>set1</th>\n",
       "      <th>set2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.521435</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.521435</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.521435</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.523263</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>0.451163</td>\n",
       "      <td>0.523263</td>\n",
       "      <td>55,758,458,408,311,618,850,199,436,677,253,814...</td>\n",
       "      <td>108,417,157,409,309,246,451,71,77,625,942,233,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8392</th>\n",
       "      <td>16</td>\n",
       "      <td>5</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.468786</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8393</th>\n",
       "      <td>16</td>\n",
       "      <td>6</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.468786</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8397</th>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.469518</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8398</th>\n",
       "      <td>17</td>\n",
       "      <td>5</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.469518</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8399</th>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "      <td>0.471412</td>\n",
       "      <td>0.469518</td>\n",
       "      <td>952,712,604,362,582,573,840,299,221,387,484,25...</td>\n",
       "      <td>540,369,335,198,763,460,242,508,287,739,286,73...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>4200 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      precision  bits     exact  approximation  \\\n",
       "3             4     4  0.451163       0.521435   \n",
       "4             4     5  0.451163       0.521435   \n",
       "5             4     6  0.451163       0.521435   \n",
       "9             5     4  0.451163       0.523263   \n",
       "10            5     5  0.451163       0.523263   \n",
       "...         ...   ...       ...            ...   \n",
       "8392         16     5  0.471412       0.468786   \n",
       "8393         16     6  0.471412       0.468786   \n",
       "8397         17     4  0.471412       0.469518   \n",
       "8398         17     5  0.471412       0.469518   \n",
       "8399         17     6  0.471412       0.469518   \n",
       "\n",
       "                                                   set1  \\\n",
       "3     55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "4     55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "5     55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "9     55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "10    55,758,458,408,311,618,850,199,436,677,253,814...   \n",
       "...                                                 ...   \n",
       "8392  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "8393  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "8397  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "8398  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "8399  952,712,604,362,582,573,840,299,221,387,484,25...   \n",
       "\n",
       "                                                   set2  \n",
       "3     108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "4     108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "5     108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "9     108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "10    108,417,157,409,309,246,451,71,77,625,942,233,...  \n",
       "...                                                 ...  \n",
       "8392  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "8393  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "8397  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "8398  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "8399  540,369,335,198,763,460,242,508,287,739,286,73...  \n",
       "\n",
       "[4200 rows x 6 columns]"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.rename(columns={\n",
    "    \"hll\": \"approximation\"\n",
    "}, inplace=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "id": "3a4ec23c",
   "metadata": {},
   "outputs": [],
   "source": [
    "df[\"memory\"] = 2**df.precision * df.bits\n",
    "df[\"label\"] = \"HLL\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "id": "66519b8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "as_df[\"memory\"] = as_df.number_of_permutations * 64\n",
    "as_df[\"label\"] = \"MinHash\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "id": "70b006e2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>memory</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>64</td>\n",
       "      <td>0.245700</td>\n",
       "      <td>0.038829</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>128</td>\n",
       "      <td>0.111834</td>\n",
       "      <td>0.119985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>192</td>\n",
       "      <td>0.066232</td>\n",
       "      <td>0.082250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>256</td>\n",
       "      <td>0.044520</td>\n",
       "      <td>0.058444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>320</td>\n",
       "      <td>0.036147</td>\n",
       "      <td>0.044547</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>384</td>\n",
       "      <td>0.029469</td>\n",
       "      <td>0.043038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>512</td>\n",
       "      <td>0.026213</td>\n",
       "      <td>0.042823</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>640</td>\n",
       "      <td>0.020692</td>\n",
       "      <td>0.030712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>768</td>\n",
       "      <td>0.016957</td>\n",
       "      <td>0.021559</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1024</td>\n",
       "      <td>0.014456</td>\n",
       "      <td>0.024051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1280</td>\n",
       "      <td>0.013237</td>\n",
       "      <td>0.020519</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1536</td>\n",
       "      <td>0.012405</td>\n",
       "      <td>0.018342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2048</td>\n",
       "      <td>0.007839</td>\n",
       "      <td>0.011936</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2560</td>\n",
       "      <td>0.005947</td>\n",
       "      <td>0.009321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>3072</td>\n",
       "      <td>0.005503</td>\n",
       "      <td>0.008481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>4096</td>\n",
       "      <td>0.004550</td>\n",
       "      <td>0.008081</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>5120</td>\n",
       "      <td>0.002959</td>\n",
       "      <td>0.004933</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>6144</td>\n",
       "      <td>0.001980</td>\n",
       "      <td>0.002635</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>8192</td>\n",
       "      <td>0.001767</td>\n",
       "      <td>0.002579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>10240</td>\n",
       "      <td>0.001470</td>\n",
       "      <td>0.002185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>12288</td>\n",
       "      <td>0.001101</td>\n",
       "      <td>0.001544</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>16384</td>\n",
       "      <td>0.000853</td>\n",
       "      <td>0.001230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>20480</td>\n",
       "      <td>0.000844</td>\n",
       "      <td>0.001090</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24576</td>\n",
       "      <td>0.000760</td>\n",
       "      <td>0.000989</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>32768</td>\n",
       "      <td>0.000585</td>\n",
       "      <td>0.000822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>40960</td>\n",
       "      <td>0.000469</td>\n",
       "      <td>0.000661</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>49152</td>\n",
       "      <td>0.000337</td>\n",
       "      <td>0.000403</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>65536</td>\n",
       "      <td>0.000261</td>\n",
       "      <td>0.000296</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>81920</td>\n",
       "      <td>0.000223</td>\n",
       "      <td>0.000280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>98304</td>\n",
       "      <td>0.000156</td>\n",
       "      <td>0.000223</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>131072</td>\n",
       "      <td>0.000124</td>\n",
       "      <td>0.000195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>163840</td>\n",
       "      <td>0.000104</td>\n",
       "      <td>0.000152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>196608</td>\n",
       "      <td>0.000099</td>\n",
       "      <td>0.000127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>262144</td>\n",
       "      <td>0.000064</td>\n",
       "      <td>0.000091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>327680</td>\n",
       "      <td>0.000048</td>\n",
       "      <td>0.000063</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>393216</td>\n",
       "      <td>0.000039</td>\n",
       "      <td>0.000050</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    memory      mean       std\n",
       "0       64  0.245700  0.038829\n",
       "1      128  0.111834  0.119985\n",
       "2      192  0.066232  0.082250\n",
       "3      256  0.044520  0.058444\n",
       "4      320  0.036147  0.044547\n",
       "5      384  0.029469  0.043038\n",
       "6      512  0.026213  0.042823\n",
       "7      640  0.020692  0.030712\n",
       "8      768  0.016957  0.021559\n",
       "9     1024  0.014456  0.024051\n",
       "10    1280  0.013237  0.020519\n",
       "11    1536  0.012405  0.018342\n",
       "12    2048  0.007839  0.011936\n",
       "13    2560  0.005947  0.009321\n",
       "14    3072  0.005503  0.008481\n",
       "15    4096  0.004550  0.008081\n",
       "16    5120  0.002959  0.004933\n",
       "17    6144  0.001980  0.002635\n",
       "18    8192  0.001767  0.002579\n",
       "19   10240  0.001470  0.002185\n",
       "20   12288  0.001101  0.001544\n",
       "21   16384  0.000853  0.001230\n",
       "22   20480  0.000844  0.001090\n",
       "23   24576  0.000760  0.000989\n",
       "24   32768  0.000585  0.000822\n",
       "25   40960  0.000469  0.000661\n",
       "26   49152  0.000337  0.000403\n",
       "27   65536  0.000261  0.000296\n",
       "28   81920  0.000223  0.000280\n",
       "29   98304  0.000156  0.000223\n",
       "30  131072  0.000124  0.000195\n",
       "31  163840  0.000104  0.000152\n",
       "32  196608  0.000099  0.000127\n",
       "33  262144  0.000064  0.000091\n",
       "34  327680  0.000048  0.000063\n",
       "35  393216  0.000039  0.000050"
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "as_df[\"squared_error\"] = (as_df.exact - as_df.approximation)**2\n",
    "data_minhash = as_df.groupby(\"memory\")[\"squared_error\"].agg([\"mean\", \"std\"]).reset_index()\n",
    "data_minhash"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "id": "b8106fcc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>precision</th>\n",
       "      <th>bits</th>\n",
       "      <th>memory</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>64</td>\n",
       "      <td>0.030784</td>\n",
       "      <td>0.032352</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>80</td>\n",
       "      <td>0.030784</td>\n",
       "      <td>0.032352</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>96</td>\n",
       "      <td>0.030784</td>\n",
       "      <td>0.032352</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>128</td>\n",
       "      <td>0.012194</td>\n",
       "      <td>0.016551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>160</td>\n",
       "      <td>0.012194</td>\n",
       "      <td>0.016551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>192</td>\n",
       "      <td>0.012194</td>\n",
       "      <td>0.016551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>256</td>\n",
       "      <td>0.016154</td>\n",
       "      <td>0.016725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>320</td>\n",
       "      <td>0.016154</td>\n",
       "      <td>0.016725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>384</td>\n",
       "      <td>0.016154</td>\n",
       "      <td>0.016725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>512</td>\n",
       "      <td>0.005174</td>\n",
       "      <td>0.007540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>640</td>\n",
       "      <td>0.005174</td>\n",
       "      <td>0.007540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "      <td>768</td>\n",
       "      <td>0.005174</td>\n",
       "      <td>0.007540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>1024</td>\n",
       "      <td>0.002275</td>\n",
       "      <td>0.003155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>1280</td>\n",
       "      <td>0.002275</td>\n",
       "      <td>0.003155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>1536</td>\n",
       "      <td>0.002275</td>\n",
       "      <td>0.003155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>2048</td>\n",
       "      <td>0.000510</td>\n",
       "      <td>0.000736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>2560</td>\n",
       "      <td>0.000510</td>\n",
       "      <td>0.000736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "      <td>3072</td>\n",
       "      <td>0.000510</td>\n",
       "      <td>0.000736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>10</td>\n",
       "      <td>4</td>\n",
       "      <td>4096</td>\n",
       "      <td>0.000344</td>\n",
       "      <td>0.000397</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>10</td>\n",
       "      <td>5</td>\n",
       "      <td>5120</td>\n",
       "      <td>0.000344</td>\n",
       "      <td>0.000397</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>10</td>\n",
       "      <td>6</td>\n",
       "      <td>6144</td>\n",
       "      <td>0.000344</td>\n",
       "      <td>0.000397</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>11</td>\n",
       "      <td>4</td>\n",
       "      <td>8192</td>\n",
       "      <td>0.000190</td>\n",
       "      <td>0.000289</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>11</td>\n",
       "      <td>5</td>\n",
       "      <td>10240</td>\n",
       "      <td>0.000190</td>\n",
       "      <td>0.000289</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>12288</td>\n",
       "      <td>0.000190</td>\n",
       "      <td>0.000289</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>12</td>\n",
       "      <td>4</td>\n",
       "      <td>16384</td>\n",
       "      <td>0.000042</td>\n",
       "      <td>0.000048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>12</td>\n",
       "      <td>5</td>\n",
       "      <td>20480</td>\n",
       "      <td>0.000042</td>\n",
       "      <td>0.000048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>24576</td>\n",
       "      <td>0.000042</td>\n",
       "      <td>0.000048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>13</td>\n",
       "      <td>4</td>\n",
       "      <td>32768</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000031</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>13</td>\n",
       "      <td>5</td>\n",
       "      <td>40960</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000031</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>13</td>\n",
       "      <td>6</td>\n",
       "      <td>49152</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000031</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>14</td>\n",
       "      <td>4</td>\n",
       "      <td>65536</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>14</td>\n",
       "      <td>5</td>\n",
       "      <td>81920</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>14</td>\n",
       "      <td>6</td>\n",
       "      <td>98304</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>15</td>\n",
       "      <td>4</td>\n",
       "      <td>131072</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>15</td>\n",
       "      <td>5</td>\n",
       "      <td>163840</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>15</td>\n",
       "      <td>6</td>\n",
       "      <td>196608</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>0.000009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>16</td>\n",
       "      <td>4</td>\n",
       "      <td>262144</td>\n",
       "      <td>0.000003</td>\n",
       "      <td>0.000004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>16</td>\n",
       "      <td>5</td>\n",
       "      <td>327680</td>\n",
       "      <td>0.000003</td>\n",
       "      <td>0.000004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>16</td>\n",
       "      <td>6</td>\n",
       "      <td>393216</td>\n",
       "      <td>0.000003</td>\n",
       "      <td>0.000004</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>524288</td>\n",
       "      <td>0.000001</td>\n",
       "      <td>0.000001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>17</td>\n",
       "      <td>5</td>\n",
       "      <td>655360</td>\n",
       "      <td>0.000001</td>\n",
       "      <td>0.000001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "      <td>786432</td>\n",
       "      <td>0.000001</td>\n",
       "      <td>0.000001</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    precision  bits  memory      mean       std\n",
       "0           4     4      64  0.030784  0.032352\n",
       "1           4     5      80  0.030784  0.032352\n",
       "2           4     6      96  0.030784  0.032352\n",
       "3           5     4     128  0.012194  0.016551\n",
       "4           5     5     160  0.012194  0.016551\n",
       "5           5     6     192  0.012194  0.016551\n",
       "6           6     4     256  0.016154  0.016725\n",
       "7           6     5     320  0.016154  0.016725\n",
       "8           6     6     384  0.016154  0.016725\n",
       "9           7     4     512  0.005174  0.007540\n",
       "10          7     5     640  0.005174  0.007540\n",
       "11          7     6     768  0.005174  0.007540\n",
       "12          8     4    1024  0.002275  0.003155\n",
       "13          8     5    1280  0.002275  0.003155\n",
       "14          8     6    1536  0.002275  0.003155\n",
       "15          9     4    2048  0.000510  0.000736\n",
       "16          9     5    2560  0.000510  0.000736\n",
       "17          9     6    3072  0.000510  0.000736\n",
       "18         10     4    4096  0.000344  0.000397\n",
       "19         10     5    5120  0.000344  0.000397\n",
       "20         10     6    6144  0.000344  0.000397\n",
       "21         11     4    8192  0.000190  0.000289\n",
       "22         11     5   10240  0.000190  0.000289\n",
       "23         11     6   12288  0.000190  0.000289\n",
       "24         12     4   16384  0.000042  0.000048\n",
       "25         12     5   20480  0.000042  0.000048\n",
       "26         12     6   24576  0.000042  0.000048\n",
       "27         13     4   32768  0.000024  0.000031\n",
       "28         13     5   40960  0.000024  0.000031\n",
       "29         13     6   49152  0.000024  0.000031\n",
       "30         14     4   65536  0.000016  0.000021\n",
       "31         14     5   81920  0.000016  0.000021\n",
       "32         14     6   98304  0.000016  0.000021\n",
       "33         15     4  131072  0.000008  0.000009\n",
       "34         15     5  163840  0.000008  0.000009\n",
       "35         15     6  196608  0.000008  0.000009\n",
       "36         16     4  262144  0.000003  0.000004\n",
       "37         16     5  327680  0.000003  0.000004\n",
       "38         16     6  393216  0.000003  0.000004\n",
       "39         17     4  524288  0.000001  0.000001\n",
       "40         17     5  655360  0.000001  0.000001\n",
       "41         17     6  786432  0.000001  0.000001"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"squared_error\"] = (df.exact - df.approximation)**2\n",
    "data_hll = df.groupby([\"precision\", \"bits\", \"memory\"])[\"squared_error\"].agg([\"mean\", \"std\"])\n",
    "data_hll = data_hll.reset_index()\n",
    "data_hll"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "id": "9a370282",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "for bits in data_hll[\"bits\"].unique():\n",
    "    filtered = data_hll[data_hll.bits == bits]\n",
    "    plt.errorbar(\n",
    "        filtered.memory,\n",
    "        filtered[\"mean\"],\n",
    "        filtered[\"std\"],\n",
    "        marker='^',\n",
    "        label=f\"HLL {bits} bits\"\n",
    "    )\n",
    "plt.errorbar(\n",
    "    data_minhash.memory,\n",
    "    data_minhash[\"mean\"],\n",
    "    data_minhash[\"std\"],\n",
    "    marker='^',\n",
    "    label=\"MinHash\",\n",
    "    alpha=0.7\n",
    ")\n",
    "plt.legend()\n",
    "plt.xscale(\"log\")\n",
    "#plt.yscale(\"log\")\n",
    "plt.ylabel(\"Jaccard MSE over 1000 random sets\")\n",
    "plt.xlabel(\"Memory required (bits)\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "id": "078ad21e",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "for bits in data_hll[\"bits\"].unique():\n",
    "    filtered = data_hll[data_hll.bits == bits]\n",
    "    plt.errorbar(\n",
    "        filtered.memory,\n",
    "        filtered[\"mean\"] * filtered.memory,\n",
    "        filtered[\"std\"] * filtered.memory,\n",
    "        marker='^',\n",
    "        label=f\"HLL {bits} bits\"\n",
    "    )\n",
    "\n",
    "plt.errorbar(\n",
    "    data_minhash.memory,\n",
    "    data_minhash[\"mean\"] * data_minhash.memory,\n",
    "    data_minhash[\"std\"] * data_minhash.memory,\n",
    "    marker='^',\n",
    "    label=\"MinHash\",\n",
    "    alpha=0.7\n",
    ")\n",
    "plt.legend()\n",
    "plt.xscale(\"log\")\n",
    "plt.ylabel(\"Jaccard MSE times number of bits\")\n",
    "plt.xlabel(\"Memory required (bits)\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}